package com.wkb.threadPoll.achieve;

import java.util.LinkedList;
import java.util.List;

/**  
 * @author wkb 
 * @version 创建时间：2013-6-20 上午8:25:42  
 * 类说明
 */
public class SingleThreadPool extends ThreadGroup{

	private static SingleThreadPool singleThreadPool= new SingleThreadPool(1);
	
	public SingleThreadPool( int arg0) {
		
		/**
		*@version 创建时间：2013-6-20 上午9:24:24
		*/
		super(arg0 + ""); 
	}
	
	private LinkedList<Runnable> linkList = new LinkedList<Runnable>();
	
	private Boolean isClosed = true;
	
	/**
	 * 增加一个新的线程在线程组里
	 * @param newRunn
	 */
	public void addRunnable(Runnable newRunn){
		
		this.linkList.addLast(newRunn);
		
		
		
	}
	
	/**
	 * @throws InterruptedException
	 */
	public synchronized void beginExecute() throws InterruptedException{
		
		if(isClosed){ //如果线程都停了。就退出
			return;
		}
		if(!this.linkList.isEmpty()){
			isClosed = true;
			return;
		}
		//按照顺序运行第一个线程，等第一个线程运行完后，继续运行下一个线程
		while(!this.linkList.isEmpty()){
			Runnable run = this.linkList.getFirst();
			Thread firstThread = new Thread(run);
			firstThread.run();
			firstThread.join();
			this.linkList.removeFirst();
		}
		
	}
	
	
}
